package ws;

import java.util.ArrayList;
import java.util.Collection;

import org.apache.tools.ant.filters.TokenFilter.ReplaceString;
import org.mortbay.util.ajax.JSON;
import org.mortbay.util.ajax.JSONObjectConvertor;
import org.orm.*;

import SOAPVO.AlumnoSOAPVO;
import com.google.gson.Gson;

/**
 * 
 * @author kron623
 * 
 *         Clase que maneja las listas que se presentaran en la pantalla
 *         principal de esta forma obtenemos los datos para la lista de alumnos
 *         y los combo box de cursos y subsector
 * 
 */

public class ListasSOAP {


	/**
	 * Lista a todos los alumnos existentes
	 * 
	 * @return lista , lista de todos los alumnos 
	 * @throws PersistentException
	 */

	public String listAlumnos() throws PersistentException {

		String listaSerializada="";
		Collection<AlumnoSOAPVO> colecionAlumnoSOAPVO = new ArrayList<AlumnoSOAPVO>();
		orm.DAOFactory lDAOFactory = orm.DAOFactory.getDAOFactory();
		orm.Tan_alumno[] ormTan_alumnos = lDAOFactory.getTan_alumnoDAO().listTan_alumnoByQuery(null, null);
		int length = ormTan_alumnos.length;
		for (int i = 0; i < length; i++) {
			AlumnoSOAPVO objeto = AlumnoSOAPVO.creaAlumnoSOAPVO(ormTan_alumnos[i]);
			colecionAlumnoSOAPVO.add(objeto);
		}
		Gson gson = new Gson();
		listaSerializada =  gson.toJson(colecionAlumnoSOAPVO);
		listaSerializada = agregaComillas(listaSerializada);
		return listaSerializada;
	}
	/**
	 * Lista a los alumnos segun  su curso
	 * @param idCurso
	 * @return
	 * @throws PersistentException
	 */
	public String listAlumnosByCurso(String idCurso) throws PersistentException {

		String listaSerializada="";
		Collection<AlumnoSOAPVO> colecionAlumnoSOAPVO = new ArrayList<AlumnoSOAPVO>();
		orm.DAOFactory lDAOFactory = orm.DAOFactory.getDAOFactory();
		orm.Tan_alumno[] ormTan_alumnos = lDAOFactory.getTan_alumnoDAO().listTan_alumnoByQuery("tan_cursocu_id_curso= "+idCurso+"", null);
		int length = ormTan_alumnos.length;
		for (int i = 0; i < length; i++) {
			AlumnoSOAPVO objeto = AlumnoSOAPVO.creaAlumnoSOAPVO(ormTan_alumnos[i]);
			colecionAlumnoSOAPVO.add(objeto);
		}
		Gson gson = new Gson();
		listaSerializada =  gson.toJson(colecionAlumnoSOAPVO);
		listaSerializada = agregaComillas(listaSerializada);
		return listaSerializada;
	}
	/**
	 * muestra todos los cursos, retorna un arreglo con los datos
	 * @return lista[] String
	 * @throws PersistentException
	 */
	public String[] listCursos() throws PersistentException {

		orm.DAOFactory lDAOFactory = orm.DAOFactory.getDAOFactory();
		orm.Tan_curso[] ormTan_cursos = lDAOFactory.getTan_cursoDAO().listTan_cursoByQuery(null,null);
		String[] lista= new String[ormTan_cursos.length  ];
		int length = ormTan_cursos.length;
		for (int i = 0; i < length; i++) {
			lista[i]=(ormTan_cursos[i].getCu_nombre());
		}
		return lista;
	}

	/**
	 * retorna todos los Sub-Sectores.
	 * @return lista String[]
	 * @throws PersistentException
	 */
	public String[] listSubSector() throws PersistentException {

		orm.DAOFactory lDAOFactory = orm.DAOFactory.getDAOFactory();
		orm.Tan_subsector[] ormTan_subsectors = lDAOFactory.getTan_subsectorDAO().listTan_subsectorByQuery(null, null);
		String[] lista= new String[ormTan_subsectors.length];
		int length = ormTan_subsectors.length;
		for (int i = 0; i < length; i++) {
			lista[i] = (ormTan_subsectors[i].getSu_nombre());
		}
		
		return lista;

	}
	/**
	 * agrega comillas a los elementos serializados para que llegen bien formados a las aplicaciones clientes.
	 * 
	 * @param json
	 * @return json 
	 */
	private String agregaComillas(String json){
		
		json = json.replace(":", ":\"");
		json = json.replace(",\"", "\",\"");
		json = json.replace("}", "\"}");
		json = json.replace("\"\"", "\"");
		return json;
	}

}
